package cn.uc.ucgc.community.upgrade.api;

import java.io.File;

import org.slf4j.Logger;

/**
 * 业务通过实现该接口，并将实现类放在指定的位置
 * 升级框架会自动加载，并根据优先级依次执行
 * 
 * @author yuyj@ucweb.com
 * @createDate 2014-3-14
 *
 */
public interface IUpgradeJob {
    /**
     * 此任务的优先级，数字越小，表示优先级越高
     * @return [0,int.MAX_VALUE)
     */
    public int getPriority();

    /**
     * 执行待准备的任务
     * @param oldAppHome 旧版本的根路径
     * @param newAppHome  新版本的根路径
     * @param logger 日志示例
     */
    public void doPrepareTask(File oldAppHome, File newAppHome, Logger logger);

    /**
     * 执行任务
     * @param oldAppHome 旧版本的根路径
     * @param newAppHome  新版本的根路径
     * @param logger 日志示例
     */
    public void doExeTask(File oldAppHome, File newAppHome, Logger logger);

    /**
     * 结束前的修正任务
     * @param oldAppHome 旧版本的根路径
     * @param newAppHome  新版本的根路径
     * @param logger 日志示例
     */
    public void doReviseTask(File oldAppHome, File newAppHome, Logger logger);
}
